import java.util.*;
/**
 * @author LKQ
 * @date 2021/12/23 16:04
 * @description 重点在于如何判断是否会无限循环始终不能到1
 * 用Set来判断，如果发现重复的数，那么走进了循环呗，不是快乐数
 */
public class Solution {
    public static void main(String[] args) {

    }


    public boolean isHappy(int n) {
        Set<Integer> set = new HashSet<>();
        while (true) {
            int sum = 0;
            while (n != 0) {
                int num = n % 10;
                sum += num * num;
                n /= 10;
            }
            if (sum == 1) {
                return true;
            }
            if (set.contains(sum)) {
                return false;
            }
            set.add(sum);
            n = sum;
        }
    }
}
